
package miagetest.client.commands;

import dao.EntityAlreadyExistsException;
import dao.InexistantEntityException;
import entities.Commande;
import gestion.GestionnaireRemote;
import java.io.PrintStream;
import java.util.List;
import miagetest.client.interfaces.ShellCommand;
import miagetest.client.interfaces.ShellConstantes;
import miagetest.client.interfaces.ShellContext;

/**
 * Commandes liées... aux commandes
 * @author Alex
 */
public class CommandeCommandImpl implements ShellCommand {

    private ShellContext context = null;

    public CommandeCommandImpl(ShellContext context) {
        this.context = context;
    }

    @Override
    public String getName() {
        return "commande";
    }

    @Override
    public String getUsage() {
        return "commande <-create referenceProduit idClient quantity>";
    }

    @Override
    public String getShortDescription() {
        return "afficher la liste des commandes, ou créer une commande";
    }

    @Override
    public void execute(String cmdline, PrintStream out, PrintStream err) {
        GestionnaireRemote gestionnaire = (GestionnaireRemote) context.getVar(ShellConstantes.GESTIONNAIRE);

        String[] cmdwords = cmdline.split(" ");

        try {
            if (cmdwords.length == 1) //pas de param
            {
                List<Commande> commandes = (List<Commande>) gestionnaire.getAll(Commande.class);

                 for(Commande commande : commandes)
                        out.println(commande.getPkey() + " " + commande.getProduit().getNom() + " " + commande.getQuantity() + " " + commande.getDate());

            } else if (cmdwords.length >= 3) //est-ce que le param est bien renseigné
            {
                String cmdParamName = cmdwords[1];
                String cmdParamValue = cmdwords[2];

                if (cmdParamName.equals("-create")) {

                    Integer referenceProduit = Integer.parseInt(cmdwords[2]);
                    Integer idClient = Integer.parseInt(cmdwords[3]);
                    Integer quantity = Integer.parseInt(cmdwords[4]);

                    gestionnaire.creerCommande(referenceProduit, idClient, quantity);
                    out.println("Votre commande a été ajoutée avec succès.");
                }
            }
        } catch (EntityAlreadyExistsException e) {
            err.println(e.toString());
        } catch (InexistantEntityException e) {
            err.println(e.toString());
        } catch (java.lang.ArrayIndexOutOfBoundsException e) {
            err.println("Erreur dans le nombre de paramètres saisis.");
        }
    }
}
